home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 October
/
EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso
/
Aminet
/
mus
/
play
/
Play16_1_4.lha
/
Play16_1.4
/
Play16.dok
< prev
next >
Wrap
Text File
|
1995-06-22
|
19KB
|
447 lines
--------------------------------------------------------------------------
- Play16 Version 1.4 (22.06.95) - Ein flexibler Soundabspieler für Amiga -
--------------------------------------------------------------------------
Kurzübersicht
-------------
- erkennt und spielt automatisch verschiedene Soundformate, bis zu
16 Bit, 56 kHz, stereo
- volle Workbench-Unterstützung, jedoch kein GUI
- immer korrekte Wiedergabegeschwindigkeit, sogar bei Sounds >28 kHz
- Echtzeitwiedergabe von Festplatte, optimierte Assembler-Routinen
- 14 Bit Ausgabe möglich (weniger Rauschen, aber schlechter als 16 Bit)
- automatische oder manuelle Filter-Kontrolle
- spielt Mono-Sounds auf BEIDEN Kanälen, nicht nur auf dem linken
- spielt (und wiederholt) Files, die größer als der Speicher sind
- Vorlade-Funktion für Tastengenaues Playback-Starten
- schnelle uLaw Entpackfunktion
- Systemfreundliche Tonkanal-Belegung
- Ausgabe in ein File ist möglich (Sound-Konvertierung)
- unterstützte Filetypen bislang:
* Microsoft RIFF-WAVE (.WAV) mono / stereo, 8 / 16 bit, linear / uLaw
* Creative Voice File (.VOC) mono / stereo, 8 / 16 bit, linear
* Sun/NeXT Audio (.AU) mono / stereo, 8 / 16 bit, linear / uLaw
* MacroSystem MAUD (.MAUD) mono / stereo, 8 / 16 bit, linear
* Apple/SGI/Amiga AIFF (.AIFF) mono / stereo, 8 / 16 bit, linear
* Amiga IFF-8SVX (.IFF) mono / stereo, 8 bit, linear
* Raw-Sound-Daten mit mindestens einer folgender Voraussetzungen:
- 8 bit Vorzeichenbehaftet
- 8 bit nicht Vorzeichenbehaftet
- 16 bit signed, Intel Format (LSB zuerst)
- 16 bit signed, Motorola Format (MSB zuerst)
- derzeitig unterstützte Ausgabegeräte:
* Amiga (Paula) 8 bit
* Amiga (Paula) 14 bit
* Amiga (Paula) 14 bit kalibriert (Christian Buchner)
* MacroSystem Maestro Pro 16 bit 44.1kHz und 48kHz
* IFF-8SVX File Ausgabe 8 bit
========================== Kapitel 1: Quick Start =========================
Was wird für Play16 benötigt?
-----------------------------
Ein Amiga mit mindestens Kickstart/Workbench 2.04.
Um die kalibrierte 14Bit-Ausgabe zu verwenden, muß ein gültiges
CyberSound-Preferenzfile im ENVARC: vorhanden sein. Wenn ein solches noch
nicht erstellt wurde, kann es mit Christians Kalibrierungsprogramm, das
sich in diesem Archiv befindet, erzeugt werden.
Maestix.library V38 wird für die MPro-Ausgabe benötigt.
Wo finde ich die neueste Version?
---------------------------------
- FIDONET: Amiga Venture BBS, Germany (2:243/6050)
- AMINET: mus/play
- WWW: http://linux.rz.fh-hannover.de/~wenzel/Play16/
ferner empfehle ich, folgende Pakete anzusehen:
CyberSound:
- AMINET: disk/cdrom/14Bit_CDPlayer.lha
Maestix:
- AMINET: util/libs/Maestix38_00.lha
Wie verwende ich es?
--------------------
CLI: "Play16 <filename>" - das ist alles!
Workbench: Nach einem Doppelklick auf das Icon erscheint ein Filerequester.
Alle möglichen Optionen werden später erläutert. Wenn keine Option gesetzt
ist, werden die Standardwerte angenommen.
================= Kapitel 2: Hintergrunds-Informationen ===================
Was tut es?
-----------
Grundsätzlich ist Play16 in der Lage, unkomprimierte und _einige_
komprimierte Soundfiles mit dem Standard Amiga AudioDevice abzuspielen
oder eine wachsende Anzahl externer Geräte anzusteuern. Sollte die dazu
benötigte Auflösung oder Wiedergabegeschwindigkeit eines Sample-Files die
Möglichkeiten der Amigahardware überschreiten, wird eine Echtzeit-Anpassung
vorgenommen, so daß der Sound immer korrekt wiedergegeben wird.
Es können sogar 16 Bit/44.1kHz Sounds wiedergegeben werden, vorausgesetzt,
alle Elemente des verwendeten Systems kommen mit der hohen Datentransferrate
mit. In einem solchen Fall ist ein beschleunigter Amiga eine sinnvolle
Sache!
Die beiden Audiokanäle einer jeden Seite können miteinander verbunden
werden um eine 14Bit Ausgabe zu ermöglichen. Dies erfordert jedoch
ebenfalls eine Menge Rechenzeit.
Auf jeden Fall ist mein Amiga 3000-16MHz schnell genug, ein unkomprimiertes
Soundfile mit 44.1kHz/14Bit (Productivity Mode!) direkt von der Festplatte
abzuspielen.
Ich habe nicht vor, Play16 soweit zu erweitern, daß es jedes, aber auch
jedes exotische Format, das irgendwo existieren mag, unterstützt. Dennoch
versuche ich, soviele verbreitete Formate wie möglich einzubinden.
Warum Play16?
-------------
16Bit Soundkarten werden immer populärer, besonders auf PCs. Das
verbreitete Format dort ist Microsoft (örks! :-) ) RIFF-WAVE Format.
Ich konnte kein CLI-Programm zum Abspielen von 16Bit-Aufnahmen finden,
also entschied ich mich, selber eines zu schreiben: Play16.
Warum CLI - und keine GUI?
--------------------------
Es gibt so viele GUI unterstützende Directory-Utilities - Play16 kann
einfach als externer Player eingebunden werden. Die begleitende
Dokumentation der Directory-Programme sollte erläutern, wie dies möglich
ist. Ein Beispiel wäre: Ein Schalter namens "Jingle" wird angelegt und
enthält die Funktion "Play16 <filename> PRELOAD". Nachdem dann das
gewünschte Soundfile angewählt und der Schalter "Jingle" angeklickt wurde,
kann per Tastendruck die Wiedergabe des Sounds gestartet werden. Das ist
besonders brauchbar auf Partys oder beim Nachvertonen von Videos ;-)
Wie funktioniert es?
--------------------
Das gewöhnliche Amiga Audio Device ist beschränkt auf 8Bit, 28kHz
Wiedergabegeschwindigkeit mit DMA. Mit der Einführung des ECS wurde die
28kHz Barriere überwunden, jedoch nur, wenn der aktuelle Displaymodus einer
mit doppelter Scanrate war, wie z.B. Productivity. Der Grund hierfür ist
die Abhängigkeit von Video- und Audio-DMA. Sollte kein ECS-Chipsatz
vorhanden sein oder ist das Umschalten auf Productivity nur zum Anhören
eines Sounds unerwünscht, kann Play16 die Wiedergaberate während des
Abspielens halbieren.
Ein anderer Weg, hohe Wiedergabequalität zu erlangen, ist IRQ. Das
funktioniert unabhängig vom Displaymodus. Ich habe, lange bevor ich an
Play16 zu schreiben angefangen habe, damit herumexperimentiert, es waren
aber immer derart viele "Jitter"-Störungen, daß meine heute verwendete
Wiedergabe Methode doch erheblich besser klingt.
Um auch lange Sounds wiedergeben zu können, wird die oft verwendete
DoubleBuffer-Methode benutzt. Alternativ können auch alle Daten in den
Speicher geladen werden, dies ist zum Abspielen kurzer Sounds oder zum
Wiedergeben von langsamen Medien wie Floppies oder CD-Rom sinnvoll.
Die 14Bit Ausgabe wird erreicht, indem ein Kanal auf jeder Seite auf
Lautstärke 64, der andere auf Lautstärke 1 gesetzt wird. Der lautere Kanal
repräsentiert dann die oberen 8 Bit, während der leisere die unteren 6
Bit wiedergibt. Da das Timing bei dieser Methode sehr kritisch ist, ist es
nötig, direkt auf die Hardware zuzugreifen, anstatt das audio.device zu
verwenden. Diese Methode mag in zukünftigen Amiga-Modellen nicht mehr
möglich sein - sollte es solche jemals geben... :-/
Unglücklicherweise sind die DACs im Amiga nicht linear. Eine erhebliche
Soundqualitätssteigerung kann daher mit einer Kalibrierung der
MSB-Konvertierung erreicht werden. Dazu muß, mit Christian Buchners
CyberSound System, jeder Schritt einzeln eingestellt werden. Play16 kann
die erstellten Preferenzfiles von CyberSound einlesen.
Die MPro Ausgabe verwendet die maestix.library von Richard Körber. Weitere
Details sind im Maestix-Paket auf dem Aminet zu finden.
=========================== Kapitel 3: Optionen ============================
Welche Optionen gibt es?
------------------------
Es gibt drei Wege, Optionen an Play16 zu übergeben:
CLI: In der Kommandozeile, AmigaOS 2.x Template
Workbench: Im Icon, Amiga Workbench Tooltype Einträge
Generell: Mit dem Setzen von Enviroment-Variablen. Dies ist noch nicht
für alle Funktionen möglich.
Die Tooltype Einträge sind identisch mit dem Keywords, die in der
Kommandozeile übergeben werden können. Für weitere Informationen über die
Verwendung von Keywords oder Tooltypes sei ein Blick in die AmigaOS-
Dokumentationen empfohlen. Die Enviroment-Variablen bestehen einfach aus
dem entsprechenden Namen und sind in ENV:Play16 abgelegt.
Grundlegende Optionen: (Alle Optionen mit (*) erlauben entsprechende
ENV-Variablen)
WINDOW/K(*) Ausgabefenster-Größe. Dieses Keyword kann nur als ToolType
eingetragen werden - und zwar nur im Play16 Icon selber. Wenn
es nicht angegeben wird, werden die programmierten Werte ver-
wendet.
VERBOSITY/N Gibt den Grad der Informationsmenge an.
0: Nur Banner und Error-Meldungen
1: gibt Informationen über das Soundfile und den verwendeten
Speicher aus
2: Informationen über Programmschritte
3: Debugging Informationen (dürfte wild aussehen :) )
Voreinstellung ist Level 0.
FAST/S schaltet NICHT automatisch auf halbe Wiedergaberate herunter,
wenn die im Soundfile angegebene Rate 28kHz überschreitet.
Diese Option ist sinnvoll, wenn der Amiga im Productivity oder
ähnlichen Bildschirmmodi läuft.
HIFI/S Seit V1.4 überflüssig, aber aus Kompatiblitätsgründen noch
enthalten. Siehe "OUTPUT/K"
OUTPUT/K(*) Setzt das Ausgabegerät. Mögliche Optionen sind:
Paula8 Standard 8Bit Ausgabe über die Amiga-Hardware. Dies ist die
Voreinstellung.
Paula14 Schaltet auf 14Bit Wiedergabe. Achtung! Dies ist eine Hack-
Routine, die direkt die Hardware-Register anspricht. Ich habe
alles getan, das mir einfiel, um andere Tasks zu schützen,
aber man weiß ja nie... Vorsicht also bei der Anwendung.
Paula14c Das gleiche wie bei Paula14, aber mit Kalibrierungs-
Preferenzen für bessere Wiedergabequalität. Siehe
Kapitel 2.
MPro Verwendet das MacroSystem Maestro Pro Bord für die Ausgabe.
Dabei werden nur 44.1kHz und 48kHz unterstützt. Bei der
44.1kHz Wiedergabe muß ein sauberes Signal am Eingang
der Karte anliegen, für detailiertere Informationen sei die
Anleitung von Maestix und der MPro-Karte empfohlen.
8SVX Der Sound soll nicht abgespielt sondern in ein IFF-8SVX File
geschrieben werden. Im Grunde genommen ist dies die Ausgabe von
<Paula8> umgeleitet in ein File. Der Dateiname ist der der
Eingabedatei mit angehängtem "iff".
ACHTUNG: Alle Limits von <Paula8> gelten auch hier - also:
- 16Bit Sounds werden auf 8 Bit reduziert - schlechtere
Qualität
- Wenn FAST nicht gesetzt ist, wird die Sample-Rate auf
28kHz reduziert
Ich empfehle dringend, das Original-File zu behalten, wenn
genug Platz dafür ist. Die Enttäuschung über die Soundqualität
beim Kauf eines besseren Sound-Systems könnte sonst groß sein!
FILTER/K(*) FILTER=ON : Audio Filter EIN bei Wiedergabe
FILTER=OFF : Audio Filter AUS bei Wiedergabe
FILTER=AUTO: Filter abhängig von der Samplerate setzen
Wenn FILTER nicht angegeben wird, läßt Play16 die Register
des AudioFilters unberührt.
LOOPS/N Gibt die Anzahl der Wiederholungen an. Voreinstellung ist
LOOPS=1 (spielt den Sound einmal).
LOOPS=0 bedeutet endlose Wiedergabe.
Weitere Optionen:
SCREENMODE/N Art des Bildschirms, der während der Wiedergabe geöffnet
(*) werden soll. SCREENMODE=0 öffnet einen standard productivity
Screen.
SINGLE/S Benutzt nur einen Buffer statt zwei und lädt alle Daten auf
einmal in den Speicher.
PRIORITY/N Setzt die Priorität von Play16, dabei können Werte zwischen
-25 und 25 angegeben werden, Voreinstellung ist 1.
BUFFER/N Größe des Buffers in Samples. Kann zwischen 32768 und 131072
liegen. Die Menge des belegten Speichers hängt außerdem vom
Typ des Sounds ab (Stereo oder Mono, 8 oder 16 Bit).
Voreinstellung ist 65536 Samples, die Werte werden auf ein
Vielfaches von 32768 gerundet.
Übrigens ist es sinnlos, diesen Wert zu ändern, wenn der
SINGLE Buffer Modus gesetzt ist :-)
PRELOAD/S Lädt genug Daten in den Speicher, um die Wiedergabe auf einen
Tastendruck hin zu starten
RAW/S Schaltet die Dateityperkennung ab und teilt Play16 mit, was
das Format des Sounds ist.
Sollte Play16 das Format nicht selber erkennen können, wird
ebenfalls auf RAW geschaltet. Soll dies verhindert werden,
kann STRICT gesetzt werden:
STRICT/S Spielt nur Files, die von der AutoDetect-Routine erkannt
werden. Dies ist sinnvoll, wenn z.B. keine plötzlichen
Krachgeräusche erwünscht sind (wenn z.B. Bilder statt
Sounds angehört werden sollen :-)
Beispiele:
a) Play16 music.wav
spielt das File "music.wav" einmal direkt von der Platte.
b) Play16 music.wav SINGLE
wie vor, lädt aber die Daten zunächst in den Speicher.
c) Play16 music.wav SINGLE VERBOSITY=1
wie vor, gibt aber zusätzliche Informationen aus.
d) Play16 rhythm.wav LOOPS=10
spielt den Rhythmus als fortlaufende Schleife (10mal).
e) Play16 explosion.wav SINGLE PRELOAD
lädt die Explosion in den Speicher und wartet auf einen Tastendruck
<return> vor dem Abspielen.
f) Play16 MyFavouriteTune.wav FAST OUTPUT=8SVX
konvertiert das angegebene File nach IFF-8SVX ohne Änderung der
Samplerate
g) Play16 MyFavouriteTune.wav OUTPUT=8SVX
wie vor, begrenzt aber die Samplerate der konvertierten Datei auf
28 kHz!
Die folgenden Optionen teilen Play16 mit, welche Parameter benutzt werden
sollen, wenn der RAW-Modus angewendet wird. Dies ist entweder beim Setzen
von RAW der Fall oder wenn Play16 das File nicht identifizieren kann und
STRICT _nicht_ gesetzt ist.
Optionen im RAW Modus:
FREQ/N Sample-Frequenz in Hz
TRACKS/N Tracks, 1 = Mono, 2 = Stereo
BITS/N Auflösung in Bits, 8 oder 16
HEADER/N Länge des Headers: soviele Bytes sollen am Anfang des
Files ignoriert werden.
UNSIGNED/S Daten sind ohne Vorzeichen, nur bei 8 Bit Sounds
INTEL/S Daten sind im Intel Format, nur bei 16 Bit Sounds
ULAW/S Daten sind komprimiert mit uLaw
Die Voreinstellungen sind: 22050 Hz, Mono, 8 Bit, kein Header.
Wie wende ich dies im RAW Modus an?
-----------------------------------
Tjaaaaa...
Wenn das Format des Soundfiles bekannt ist, sollten
RAW, FREQ, TRACKS, BITS, UNSIGNED und INTEL entsprechend gesetzt werden.
Sind die Werte nicht bekannt, bleibt nur Ausprobieren übrig. Hier einige
Tips, um es etwas einfacher zu gestalten:
Der HEADER sollte auf geraden Werten stehen (zunächst erstmal 0)
Wenn BITS 16 sein sollen, und es kommt nur Rauschen, kann INTEL probiert
werden.
Wenn BITS 8 sind und der Sound verzerrt klingt, kann UNSIGNED probiert werden.
Wenn dies nicht hilft, sollten verschiedene Kombinationen von BITS, INTEL
und UNSIGNED probiert werden.
Wenn ein erkennbares Ergebnis erreicht wurde und der Sound zu schnell oder
zu langsam läuft, sollte mit TRACKS und FREQ experimentiert werden.
Wenn bekannte Files und unbekannte gespielt werden sollen, ohne die
Kommandozeile zu ändern, sollten einfach alle bekannten Daten der Raw-Files
angegeben werden und die Keywords RAW und STRICT ausgelassen bleiben. Wenn
Play16 dann den Sound identifizieren kann, benutzt es die im File
angegebenen Werte - sonst verwendet es die Parameter der Kommandozeile.
Rechtliches
-----------
Play16 unterliegt dem Copyright, ist aber FreeWare. Es darf frei kopiert
werden, solange keine Änderungen am Programm und den begleitenden
Dokumentationen vorgenommen wurden. Eine Unkostenbeteiligung in Höhe der
Selbstkosten darf erhoben werden.
Play16 darf nicht für kommerzielle Zwecke verwendet oder in einem
kommerziellen Product enthalten sein, ohne daß eine schriftliche
Genehmigung des Autors vorliegt.
Jegliche Verantwortung für beschädigte Lautsprecher, Verstärker, Amigas oder
andere bei der Verwendung von Play16 beteiligten Geräte wird ausdrücklich
abgelehnt.
Obwohl ich einige Betatests durchgeführt habe, kann ich nicht garantieren,
daß Play16 nicht crasht! Jeder aufgefundene Fehler sollte mir berichtet
werden.
Es ist weder der Fehler von MacrosSystem noch repräsentiert es die Qualität
der Produkte von MacroSystem, sollte die Ausgabe von MPro oder der
maestix.library nicht funktionieren.
Verschiedenes
-------------
Ich sage nicht, daß Play16 schnell ist. Ich habe einiges optimiert, aber da
das Lade/Konvertier-Modul universell ist, werden mehr Daten hin- und
hergeschoben, als tatsächlich zum Abspielen nötig wäre.
Dennoch habe ich seperate optimierte Routinen für 8 Bit und 14/16 Bit
eingebaut.
Ich kann unter folgenden Adressen erreicht werden:
Internet: wenzel@unixserv.rz.fh-hannover.de (vorzugsweise)
Thomas_Wenzel@aventure.fido.de
Fido: 2:243/6050.28 oder 2:241/1035.6
Mail-Routing im Fido ist NICHT immer verläßlich!
Wer dieses Programm verwendet, sollte mir bitte eine Mail schicken. Ich
wüßte gerne, wie viele Leute daran interessiert sind.
Entwicklungsgeschichte
----------------------
Bitte in der englischen Dokumentation nachlesen
Folgendes war für 1.4 geplant, konnte aber wegen fehlender Zeit nicht
verwirklicht werden:
----------------------------------------------------------------------------
- Fibonacci Delta Dekomprimierung für 8SVX Samples
- ALL/S Keyword, um Unterverzeichnisse einzubinden
Zukünftiges
-----------
- Bessere VOC-Unterstützung
- ADPCM Decompression (Schwierigkeiten bei der Programmierung!
wer einen funktionierenden ADPCM4 Decoder hat,
bitte melden)
- einige Filetype von MacIntosh Software (z.B. Sound-Designer)
- Datatypes Ünterstützung
Bekannte Fehler
---------------
Einige Files enthalten zusätzliche Informationen NACH den Sounddaten.
Play16 erkennt dies nicht und versucht daher, die Daten zu spielen. Das
Ergebnis ist ein kurzer "Biep" am Ende des Sounds. Bislang habe ich nur
einige *wenige* WAVs mit diesem zusätzlichen Block am Ende des Files
entdeckt.
Danksagungen
------------
Danke geht an die folgenden Personen:
Kai Stuke für wichtige Tips zur C-Programmierung und zum Audio-
Device des Amiga, außerdem für das BetaTesten von Play16
Marc Führer für Betatesten und Tips zur Codeoptimierung, sowie für
die deutsche Version dieser Anleitung
Clete Baker für die Spezifikationen von AIFF und SDII
Richard Körber für die Maestix Library und dafür, daß sie FreeWare ist
Christian Buchner für seine Forschungen und Ideen zur 14Bit Ausgabe und
deren Kalibrierung
Und an alle die, die mir geschrieben haben!